/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.value;

import base.CObject;
import java.util.LinkedList;

public class CValue extends CObject {
	public CType GetType() {
		return CType.Unknown;
	}

	
	
	@Override
	public CValue GetValue() {
		return this;
	}
	
	
	
	public CValue Clone() {
		return this;
	}
	
	
	
	public boolean IdenticalTo( CValue Obj ) {
		if( this.getClass() == Obj.getClass() ) return true; else return false;
	}

	
	
	/**
	* Константы для типа объекта
	*/
	public enum CType {
		/**
		 * Неизвестный тип объекта
		 */
		Unknown,

		/**
		 * Тип объекта - логическое значение
		 */
		Boolean,

		/**
		 * Тип объекта - целое число
		 */
		Int ,

		/**
		 * Тип объекта - дробное число
		 */
		Float,

		/**
		 * Тип объекта - строка
		 */
		String,

		/**
		 * Тип объекта - пользовательский объект
		 */
		UserObject,
		
		/**
		 * Тип объекта - массив
		 */
		Array,
		
		/**
		 * Тип объекта - список
		 */
		List
	}



	@Override
	public CValue[] ToArray() {
		CValue[] Array = new CValue[ 1 ];
		Array[ 0 ] = this;
		return Array;
	}



	@Override
	public LinkedList<CValue> ToList() {
		LinkedList<CValue> List = new LinkedList<CValue>();
		List.addLast( this );
		return List;
	}


	public void ReplaceValue( int NewValue ) {
	}
	
	
	
	public void ReplaceValue( float NewValue ) {
	}
	
	

	public void ReplaceValue( String NewValue ) {
	}
	
	
	 
	public void ReplaceValue( CValue[] NewValues ) {
	}
	
	
	
	public void ReplaceValue( LinkedList<CValue> NewValues ) {
	}
}
